<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
<html><head><meta name="qrichtext" content="1" /><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><style type="text/css">
p, li { white-space: pre-wrap; }
</style></head><body style=" font-family:'DejaVu Sans'; font-size:11pt; font-weight:400; font-style:normal;">
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:25.5pt; font-weight:600; color:#000000;">Шпаргалка по Selenium WebDriver 4 + Python</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:10.5pt; color:#000000;">12 декабря 2021</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:10.5pt; color:#000000;">983 прочитали</span> </p>
<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;"> </span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Всех приветствую. Каких-то эксклюзивных материалов тут не будет. Просто, сам хочу более подробно разобраться в этом инструменте. В большинстве случаев за глаза хватает библиотеки Requests, но, иногда, необходимая информация на сайте появляется только после выполнения скриптов, в этих случаях без &quot;эмулятора&quot; браузера ничего не сделать... Ну, на мой непрофессиональный взгляд. В 4 версии Селениума много обновлений, а большинство русскоязычных материалов по 2 и 3 части этой программы </span><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">(тут уж, библиотекой, язык не поворачивается назвать)</span><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">. Поэтому буду просто изучать официальные источники и интересные моменты переводить здесь.</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Если у кого есть желание самому ознакомиться с данными источниками, то вот ссылки:</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><a href="https://www.selenium.dev/"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; text-decoration: underline; color:#0000ff;">selenium.dev</span></a><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;"> - официальный сайт</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><a href="https://github.com/SeleniumHQ"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; text-decoration: underline; color:#0000ff;">github.com</span></a><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;"> - страничка на Гитхаб</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><a href="https://pypi.org/project/selenium/"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; text-decoration: underline; color:#0000ff;">pypi.org</span></a><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;"> - страничка на PiPy (для линуксоидов)</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><a href="https://www.youtube.com/watch?v=Myl8Br5aRf4&amp;list=PLqGS6O1-DZLp1kgiQNpueIMCHRNzgHa1r"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; text-decoration: underline; color:#0000ff;">Плейлист</span></a><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;"> про возможности Селениум + Пайтен от канала PythonToday</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">На сайте Селениума можно увидеть информацию о том, что есть 3 ветви данной программы. Selenium WebDriver - управление браузером посредством большого множества языков программирования, Selenium IDE - планины для хрома и фаерфокса для автоматизации прямо через браузер, Selenium Grid - клиент-серверная система, которая позволяет Вам управлять веб-браузерами локально, или на других компьютерах, используя практически любой язык программирования.</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">В данный момент меня интересует именно Selenium WebDriver. Вот про него и продолжим.</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Немного от себя. Необходимо изначально учитывать то, что для использования Селениума, на машине необходимо иметь памяти не менее 1 Гб!</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:21pt; font-weight:600; color:#000000;">Установка</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Установку Selenium можно разделить на три этапа:</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">1) Установите библиотеку Selenium для нужного вамязыка программирования</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Питон</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Установка библиотек Selenium для Python может быть выполнена с помощью pip:</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">pip install selenium</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">В качестве альтернативы вы можете загрузить </span><a href="https://pypi.org/project/selenium/#files"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; text-decoration: underline; color:#0000ff;">исходный архив PyPI</span></a><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;"> (selenium-x.x.x.tar.gz) и установите его с помощью </span><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">setup.py</span><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">:</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">python setup.py install</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">2) Скачайте</span><a href="https://github.com/mozilla/geckodriver/releases"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; text-decoration: underline; color:#0000ff;"> драйвер браузера</span></a><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;"> для автоматизации вашего браузера и вашей системы</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Для работы драйвера, его необходимо распаковать в папку со скриптом. Либо поместить драйвер в каталог, который уже указан в PATHсписке, либо поместить его в любой каталог и добавить путь к этому каталогу в PATHсписок.</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Узнать адреса для Win можно перейдя в проводник =&gt; меню &quot;Свойства&quot; вкладки &quot;Этот компьютер&quot; в левом дереве каталогов =&gt; &quot;Дополнительные параметры системы&quot; =&gt; &quot;Переменные среды&quot;</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Узнать адреса для LINUX можно командой:</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">echo $PATH</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Установить новый адрес можно командой</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">export PATH=$PATH:/opt/local/bin</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Узнать полный путь до текущей директории можно командой:</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">pwd</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Но, для избежания лишних процессов в работе системы, лучше скопировать драйвер в уже прописанную директорию PATH</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Если, при использовании гекодрайвера выводится ошибка Message: 'geckodriver' executable may have wrong permissions. То, необходимо файлу предоставить права на выполнение всем пользователям.</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">3) Соответственно, необходимо установить в систему непосредственно сам браузер</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Мне более симпатичен Firefox, поэтому далее буду писать на его основе. Но, управление другими браузерами практически идентичны.</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Для Винды - </span><a href="https://www.mozilla.org/ru/firefox/"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; text-decoration: underline; color:#0000ff;">mozilla.org</span></a> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Для Линукс - </span><a href="https://www.mozilla.org/ru/firefox/linux/"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; text-decoration: underline; color:#0000ff;">mozilla.org</span></a><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;"> или</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">apt-get update<br />apt-get install firefox</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:21pt; font-weight:600; color:#000000;">Настройки</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:18pt; font-weight:600; color:#000000;">Общие настройки для всех браузеров</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">browserName:</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Актуально только для Selenium Grid</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">browserVersion:</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Актуально только для Selenium Grid</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">pageLoadStrategy:</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">При переходе на новую страницу по URL-адресу по умолчанию Selenium будет ждать, пока состояние готовности документа не станет “полным”. document. readyState Свойство документа описывает состояние загрузки текущего документа. По умолчанию WebDriver будет откладывать выполнение метода навигации (например, driver.navigate().get()) до тех пор, пока состояние готовности документа не будет complete. Это не обязательно означает, что страница завершила загрузку, особенно для сайтов, таких как одностраничные приложения, которые используют много JavaScript для динамической загрузки содержимого после завершения состояния готовности. Обратите также внимание, что это поведение не применяется к навигации, которая является результатом нажатия элемента или отправки формы.</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Если загрузка страницы занимает много времени в результате загрузки ресурсов (например, изображений, css, js), которые не важны для автоматизации, вы можете изменить параметр по умолчанию normal на eager или none ускорить сеанс. Это значение применяется ко всему сеансу, поэтому убедитесь, что ваша стратегия ожидания достаточна для минимизации ошибок.</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Стратегия загрузки страницы запрашивает </span><a href="https://developer.mozilla.org/en-US/docs/Web/API/Document/readyState"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; text-decoration: underline; color:#0000ff;">document.readyState</span></a><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">, как описано ниже:</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">СТРАТЕГИИ - Состояние Готовности - Примечания</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">normal - complete - Используется по умолчанию, ожидает загрузки всех ресурсов</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Это заставит Selenium WebDriver ждать загрузки всей страницы. Если установлено значение &quot;нормально&quot;, Selenium WebDriver ожидает, пока не будет возвращено событие загрузки.</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">По умолчанию нормальный установлен в браузер, если он не указан.</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">from selenium import webdriver<br />from selenium.webdriver.firefox.options import Options<br />options = Options()</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">options.page_load_strategy = 'normal'</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">driver = webdriver.Chrome(options=options) driver.get(&quot;http://www.google.com&quot;)</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">driver.quit()</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">eager - interactive - Доступ к DOM готов, но другие ресурсы, такие как изображения, все еще могут загружаться</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Это заставит Selenium WebDriver подождать, пока исходный HTML-документ не будет полностью загружен и проанализирован, и отменит загрузку таблиц стилей, изображений и подкадров.</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Если задано значение eager, Selenium WebDriver ожидает, пока не будет возвращен запуск события DOMContentLoaded.</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">...</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">options.page_load_strategy = 'eager'</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">...</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">none - Any - Не блокирует WebDriver вообще</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Если установлено значение none, веб-драйвер Selenium ожидает только загрузки начальной страницы.</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">...</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">options.page_load_strategy = 'none'</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">...</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">platformName</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Актуально только для Selenium Grid</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">acceptInsecureCerts</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Эта возможность проверяет, используется ли устаревший или недопустимый </span><a href="https://habr.com/ru/post/258285/"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; text-decoration: underline; color:#0000ff;">TLS Certificate</span></a><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;"> (аналог SSL сертификата) во время навигации во время сеанса.</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Если для этой функции установлено значение false, при обнаружении проблем с сертификатом домена при навигации будет возвращена ошибка небезопасного сертификата. Если установлено значение true, браузер будет доверять недействительному сертификату.</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">По умолчанию эта возможность будет доверять всем самозаверяющим сертификатам. После установки acceptInsecureCerts эта функция будет действовать в течение всего сеанса.</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">from selenium import webdriver<br />from selenium.common import exceptions<br /><br />session = webdriver.Firefox(capabilities={&quot;acceptInsecureCerts&quot;: True})<br />session.get(&quot;https://self-signed.badssl.com/&quot;)<br />print(session.current_url)</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:18pt; color:#000000;">timeouts</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Веб-драйвер session вводится с определенным session timeout интервалом, в течение которого пользователь может контролировать поведение при выполнении сценариев или получении информации из браузера.</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Каждый тайм-аут сеанса настраивается с использованием комбинации различных timeouts параметров, как описано ниже:</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Script Timeout:</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Указывает, когда прерывать выполнение сценария в текущем контексте просмотра. Время ожидания по умолчанию 30 000 устанавливается при создании нового сеанса с помощью WebDriver.</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Page Load Timeout:</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Определяет интервал времени, в течение которого необходимо загрузить веб-страницу в текущем контексте просмотра. Тайм-аут по умолчанию 300 000 устанавливается при создании нового сеанса с помощью WebDriver. Если загрузка страницы ограничивает заданный/установленный по умолчанию временной интервал, скрипт будет остановлен </span><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">исключением TimeoutException</span><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">.</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Implicit Wait Timeout</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Это указывает время ожидания неявной стратегии расположения элементов при размещении элементов. Тайм-аут по умолчанию 0 устанавливается при создании нового сеанса с помощью WebDriver.</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">unhandledPromptBehavior</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Определяет состояние текущего сеанса user prompt handler. По умолчанию используется отклонить и уведомить.</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">User Prompt Handler</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Актуально только для Selenium Grid</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">setWindowRect</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Эта команда изменяет размер и положение текущего контекстного окна просмотра. Эта команда действует как задатчик для getWindowRect команда, которая принимает ширина, высота, x, y как </span><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">необязательный</span><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;"> аргументы.</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Во время автоматизации текущий контекст просмотра будет связан с состояниями окна, которые описывают видимость окна браузера. Состояния окна являются</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Symbol'; font-size:10pt; color:#000000;">·</span><span style=" font-family:'Times New Roman'; font-size:7pt; color:#000000;"> </span><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">увеличенный - maximized</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Symbol'; font-size:10pt; color:#000000;">·</span><span style=" font-family:'Times New Roman'; font-size:7pt; color:#000000;"> </span><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">сведено к минимуму - minimized</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Symbol'; font-size:10pt; color:#000000;">·</span><span style=" font-family:'Times New Roman'; font-size:7pt; color:#000000;"> </span><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Нормальный - normal</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Symbol'; font-size:10pt; color:#000000;">·</span><span style=" font-family:'Times New Roman'; font-size:7pt; color:#000000;"> </span><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">полноэкранный - fullscreen</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Установка </span><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">ширины</span><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;"> или </span><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">высоты</span><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;"> не гарантирует, что результирующий размер окна будет точно соответствовать запрошенному. Это связано с тем, что некоторые драйверы могут не иметь возможности изменять размер с шагом в один пиксель. Из-за этого выборка состояния/сведений окна getWindowRect может не соответствовать значениям, установленным в браузере.</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">strictFileInteractability</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Эта новая возможность указывает, следует ли применять строгие проверки интерактивности к </span><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">тип ввода=файл</span><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">. Поскольку строгие проверки интерактивности по умолчанию отключены, поведение при использовании </span><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">Элемент Отправить Ключи</span><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;"> со скрытыми элементами управления загрузкой файлов</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:18pt; color:#000000;">proxy</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Прокси - сервер действует как посредник для запросов между клиентом и сервером. Проще говоря, трафик проходит через прокси-сервер на пути к запрошенному вами адресу и обратно.</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Прокси - сервер для сценариев автоматизации с помощью Selenium может быть полезен для:</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Symbol'; font-size:10pt; color:#000000;">·</span><span style=" font-family:'Times New Roman'; font-size:7pt; color:#000000;"> </span><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Захват сетевого трафика</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Symbol'; font-size:10pt; color:#000000;">·</span><span style=" font-family:'Times New Roman'; font-size:7pt; color:#000000;"> </span><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Имитация внутренних вызовов, выполняемых веб-сайтом</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Symbol'; font-size:10pt; color:#000000;">·</span><span style=" font-family:'Times New Roman'; font-size:7pt; color:#000000;"> </span><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Доступ к требуемому веб-сайту осуществляется в соответствии со сложными сетевыми топологиями или строгими корпоративными ограничениями/политиками.</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Если вы находитесь в корпоративной среде, и браузер не может подключиться к URL-адресу, скорее всего, это связано с тем, что для доступа к среде требуется прокси-сервер.</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Selenium WebDriver предоставляет способ настройки прокси-сервера:</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">from selenium import webdriver<br /><br />PROXY = &quot;&lt;HOST:PORT&gt;&quot; webdriver.DesiredCapabilities.FIREFOX['proxy'] = { &quot;httpProxy&quot;: PROXY, &quot;ftpProxy&quot;: PROXY, &quot;sslProxy&quot;: PROXY, &quot;proxyType&quot;: &quot;MANUAL&quot;,<br />}<br />with webdriver.Firefox() as driver: driver.get(&quot;https://selenium.dev&quot;)</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:18pt; font-weight:600; color:#000000;">Возможности, специфичные для браузера Firefox</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Headless</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Короче говоря, Headless Browser - это веб-браузер без графического пользовательского интерфейса (GUI), который обычно управляется с помощью программирования или интерфейса командной строки. Необходим для серверов без графической оболочки и уменьшения нагрузки на компьютер с графическим интерфейсом.</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">from selenium.webdriver.firefox.options import Options<br />options = Options()</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">options.headless = True</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">driver = webdriver.Firefox(options=options)</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Настройка пользовательского профиля</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Firefox сохраняет Вашу личную информацию, такую как закладки, пароли и личные настройки в наборе файлов называемом профилем, который хранится отдельно от программных файлов Firefox. Вы можете иметь несколько профилей, каждый из которых будет содержать свой собственный набор данных. С помощью менеджера профилей Вы можете создавать, удалять, переименовывать профили, а также переключаться между ними.</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">FirefoxProfile() устарел, и в selenium4 для использования пользовательского профиля необходимо использовать экземпляр Options.</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">from selenium.webdriver import Firefox<br />from selenium.webdriver.firefox.service import Service<br />from selenium.webdriver.firefox.options import Options<br /><br />profile_path = r'C:\Users\Administrator\AppData\Roaming\Mozilla\Firefox\Profiles\y1uqp5mi.default'</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">options=Options()<br />options.set_preference('profile', profile_path)<br />service = Service(r'C:\WebDriver\bin\geckodriver.exe')<br /><br />driver = Firefox(service=service, options=options)<br /><br />driver.get(&quot;https://selenium.dev&quot;)<br /><br />driver.quit()</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Пример програмного прикручивания профиля.</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Но, стоит облегчить себе жизнь и уменьшить код. Берём привязанный профиль и редактируем его ручками.... Потом опишу более подробно, а пока, полезные ссылки:</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><a href="https://support.mozilla.org/ru/kb/profili-gde-firefox-hranit-vashi-zakladki-paroli-i"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; text-decoration: underline; color:#0000ff;">Разбираем профиль по файлам</span></a> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:21pt; font-weight:600; color:#000000;">Получить информацию от браузера</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Получить title открытого сайта</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">driver.title</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Получить текущий URL-адрес</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">driver.current_url</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:21pt; font-weight:600; color:#000000;">Навигация по браузеру</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Открыть ресурс</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Первое, что вам захочется сделать после запуска браузера, - это открыть какой-то веб-сайт. Это может быть достигнуто в одной строке:</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">driver.get(&quot;https://selenium.dev&quot;)</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Назад</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Нажатие кнопки &quot;Назад&quot; браузера:</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">driver.back()</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Вперед</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Нажатие кнопки браузера вперед:</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">driver.forward()</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Обновить:</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Обновите текущую страницу:</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">driver.refresh()</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:18pt; font-weight:600; color:#000000;">Идентификация и работа с объектами элементов в DOM.</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Способы идентификации одного или нескольких конкретных элементов в DOM.<br />Локатор - это способ идентификации элементов на странице. Это аргумент, передаваемый методам элемента поиска.<br /><br />Ознакомьтесь с нашими рекомендуемыми методами тестирования, чтобы получить советы по локаторам, в том числе о том, что использовать, когда и почему объявлять локаторы отдельно от методов поиска.</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:18pt; font-weight:600; color:#000000;">Различные методы поиска элементов</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">driver.find_elements(By.XPATH, '//input') # выводит список найденных элементов<br />driver.find_element(By.XPATH, '//input') # Присваивает значение первого найденного элемента</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Selenium обеспечивает поддержку этих традиционных стратегий определения местоположения в WebDriver:</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">ID = “id”<br /><br />XPATH = “xpath”<br /><br />NAME = “name”<br /><br />TAG_NAME = “tag name”<br /><br />CLASS_NAME = “class name”<br /><br />LINK_TEXT = “link text”<br /><br />PARTIAL_LINK_TEXT = “partial link text”</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Скоро будет:<br /><br />Примеры выбора элементов из HTML с использованием каждой стратегии локатора</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:18pt; font-weight:600; color:#000000;">Относительные локаторы</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Селен 4 вводит Относительные локаторы (ранее называемые Дружественными локаторами). Эти локаторы полезны, когда нелегко создать локатор для нужного элемента, но легко описать пространственно, где элемент находится по отношению к элементу, который имеет легко сконструированный локатор.</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Selenium использует функцию JavaScript getBoundingClientRect() для определения размера и положения элементов на странице и может использовать эту информацию для определения местоположения соседних элементов.<br />найдите относительные элементы.<br /><br />Методы относительного локатора могут принимать в качестве аргумента для исходной точки либо ранее расположенную ссылку на элемент, либо другой локатор. В этих примерах мы будем использовать только локаторы, но вы можете поменять локатор в конечном методе на объект элемента, и он будет работать так же.<br /><br />Давайте рассмотрим приведенный ниже пример для понимания относительных локаторов.</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:18pt; font-weight:600; color:#000000;">Доступные относительные локаторы</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Above</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Если элемент текстового поля электронной почты по какой-либо причине нелегко идентифицировать, но элемент текстового поля пароля есть, мы можем найти элемент текстового поля, используя тот факт, что он является элементом “ввода” “над” элементом пароля.</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">email_locator = locate_with(By.TAG_NAME, &quot;input&quot;).above({By.ID: &quot;password&quot;})</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Below</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Если элемент текстового поля пароля по какой-либо причине нелегко идентифицировать, но элемент текстового поля электронной почты есть, мы можем найти элемент текстового поля, используя тот факт, что он является элементом “ввода” “под” элементом электронной почты.</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">password_locator = locate_with(By.TAG_NAME, &quot;input&quot;).below({By.ID: &quot;email&quot;})</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Left of</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Если по какой-либо причине кнопку “отмена” нелегко идентифицировать, но элемент кнопки “отправить” есть, мы можем найти элемент кнопки &quot;отмена&quot;, используя тот факт, что это элемент &quot;кнопка&quot; слева от элемента &quot;отправить&quot;.</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">cancel_locator = locate_with(By.TAG_NAME, &quot;button&quot;).to_left_of({By.ID: &quot;submit&quot;})</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Right of</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Если по какой-либо причине кнопку “отправить” нелегко идентифицировать, но элемент кнопки “отмена” есть, мы можем найти элемент кнопки &quot;отправить&quot;, используя тот факт, что это элемент &quot;кнопка&quot; справа от элемента &quot;отмена&quot;.</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">submit_locator = locate_with(By.TAG_NAME, &quot;button&quot;).to_right_of({By.ID: &quot;cancel&quot;})</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Near</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Если относительное расположение не очевидно или оно зависит от размера окна, вы можете использовать метод near для идентификации элемента, который находится на расстоянии не более 50 пикселей от предоставленного локатора. Одним из отличных вариантов использования для этого является работа с элементом формы, у которого нет легко построенного локатора, но есть связанный с ним элемент метки ввода.</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">email_locator = locate_with(By.TAG_NAME, &quot;input&quot;).near({By.ID: &quot;lbl-email&quot;})</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:18pt; font-weight:600; color:#000000;">Объединение в цепочку относительных локаторов</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Вы также можете подключить локаторы, если это необходимо. Иногда элемент легче всего идентифицировать как находящийся как над/под одним элементом, так и справа/слева от другого.</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">submit_locator = locate_with(By.TAG_NAME, &quot;button&quot;).below({By.ID: &quot;email&quot;}.to_right_of({By.ID: &quot;cancel&quot;})</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:21pt; font-weight:600; color:#000000;">Определение местоположения элементов на основе предоставленных значений локатора.</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Одним из наиболее фундаментальных аспектов использования Selenium является получение ссылок на элементы для работы. Selenium предлагает ряд встроенных стратегий определения местоположения для уникальной идентификации элемента. Существует множество способов использования локаторов в очень сложных сценариях. Для целей этой документации давайте рассмотрим этот фрагмент HTML-кода:</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">&lt;ol id=&quot;vegetables&quot;&gt;</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">&lt;li class=&quot;potatoes&quot;&gt;…</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">&lt;li class=&quot;onions&quot;&gt;…</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">&lt;li class=&quot;tomatoes&quot;&gt;&lt;span&gt;Tomato is a Vegetable&lt;/span&gt;…</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">&lt;/ol&gt;</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">&lt;ul id=&quot;fruits&quot;&gt;</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">&lt;li class=&quot;bananas&quot;&gt;…</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">&lt;li class=&quot;apples&quot;&gt;…</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">&lt;li class=&quot;tomatoes&quot;&gt;&lt;span&gt;Tomato is a Fruit&lt;/span&gt;…</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">&lt;/ul&gt;</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:18pt; font-weight:600; color:#000000;">Первый соответствующий элемент</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Многие локаторы будут соответствовать нескольким элементам на странице. Метод сингулярного поиска элемента вернет ссылку на первый элемент, найденный в данном контексте.</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:18pt; font-weight:600; color:#000000;">Оценка всего DOM</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Когда в экземпляре драйвера вызывается метод find element, он возвращает ссылку на первый элемент в DOM, который совпадает с предоставленным локатором. Это значение можно сохранить и использовать для будущих действий с элементом. В нашем примере HTML выше есть два элемента с именем класса “помидоры”, поэтому этот метод вернет элемент в списке “овощи”.</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">vegetable = driver.find_element(By.CLASS_NAME, &quot;tomatoes&quot;)</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">В случае, если название индификатора имеет в себе пробелы, то поиск индификатора можно вести по части названия без пробелов (пробелы выводят ошибку в коде). Например, имеем в коде</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">&lt;span class=&quot;drjCHn cewJyj&quot;&gt;Нужная информация&lt;/span&gt;</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Мы можем вести поиск элемента данным методом:</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">vegetable = driver.find_element(By.CLASS_NAME, &quot;cewJyj&quot;)</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:18pt; font-weight:600; color:#000000;">Оценка подмножества DOM</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Вместо того, чтобы находить уникальный локатор во всем DOM, часто бывает полезно сузить область поиска до другого расположенного элемента. В приведенном выше примере есть два элемента с именем класса “помидоры”, и получить ссылку на второй элемент немного сложнее.<br /><br />Одно из решений состоит в том, чтобы найти элемент с уникальным атрибутом, который является предком нужного элемента, а не предком нежелательного элемента, а затем вызвать find элемент для этого объекта:</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">fruits = driver.find_element(By.ID, &quot;fruits&quot;)</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">fruit = fruits.find_elements_by_id(&quot;tomatoes&quot;)</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">Java и C#</span><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;"><br /></span><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">Классы WebDriver, WebElement и shadowRoot реализуют интерфейс SearchContext, который считается интерфейсом на основе ролей. Интерфейсы на основе ролей позволяют определить, поддерживает ли конкретная реализация драйвера данную функцию. Эти интерфейсы четко определены и стараются придерживаться только одной ответственной роли.</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:18pt; font-weight:600; color:#000000;">Оптимизированный локатор</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Вложенный поиск может быть не самой эффективной стратегией определения местоположения, поскольку для этого браузеру необходимо выполнить две отдельные команды.<br /><br />Чтобы немного повысить производительность, мы можем использовать CSS или XPath для поиска этого элемента в одной команде. Смотрите предложения по стратегии поиска в нашем разделе &quot;Рекомендуемые методы тестирования&quot;.<br /><br />В этом примере мы будем использовать селектор CSS:</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">fruit = driver.find_element_by_css_selector(&quot;fruits .tomatoes&quot;)</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:18pt; font-weight:600; color:#000000;">Все соответствующие элементы</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Существует несколько вариантов использования для получения ссылок на все элементы, соответствующие локатору, а не только на первый. Методы множественного числа find elements возвращают коллекцию ссылок на элементы. Если совпадений нет, возвращается пустой список. В этом случае ссылки на все товары из списка фруктов и овощей будут возвращены в коллекции.</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">plants = driver.find_elemnts(By.TAG_NAME, &quot;li&quot;)</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:18pt; font-weight:600; color:#000000;">Получить элемент</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Часто вы получаете коллекцию элементов, но хотите работать с определенным элементом, а это значит, что вам нужно перебрать коллекцию и определить тот, который вам нужен.</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">from selenium import webdriver</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">from selenium.webdriver.common.by import By</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">driver = webdriver.Firefox()</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;"># Navigate to Url</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">driver.get(&quot;https://www.example.com&quot;)</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;"># Get all the elements available with tag name 'p'</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">elements = driver.find_elements(By.TAG_NAME, 'p')</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">for e in elements:</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">print(e.text)</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:18pt; font-weight:600; color:#000000;">Находить Элементы Из Элемента</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Он используется для поиска списка соответствующих дочерних веб-элементов в контексте родительского элемента. Для достижения этой цели родительский веб-элемент связан с помощью &quot;findElements&quot; для доступа к дочерним элементам</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">from selenium import webdriver</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">from selenium.webdriver.common.by import By</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">driver = webdriver.Chrome()</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">driver.get(&quot;https://www.example.com&quot;)</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;"># Get element with tag name 'div'</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">element = driver.find_element(By.TAG_NAME, 'div')</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;"># Get all the elements available with tag name 'p'</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">elements = element.find_elements(By.TAG_NAME, 'p')</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">for e in elements:</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">print(e.text)</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:21pt; font-weight:600; color:#000000;">++++++++++++++++++++++++</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:21pt; font-weight:600; color:#000000;">Предупреждения, подсказки и подтверждения JavaScript</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">WebDriver предоставляет API для работы с тремя типами собственных всплывающих сообщений, предлагаемых JavaScript. Эти всплывающие окна оформлены браузером и предлагают ограниченную настройку.</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:18pt; font-weight:600; color:#000000;">Alerts</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Самый простой из них называется предупреждением, которое отображает пользовательское сообщение, и единственной кнопкой, которая отклоняет предупреждение, помеченное в большинстве браузеров как &quot;ОК&quot;. Его также можно отключить в большинстве браузеров, нажав кнопку &quot;Закрыть&quot;, но это всегда будет делать то же самое, что и кнопка &quot;ОК&quot;. См. Пример предупреждения.</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">WebDriver может получить текст из всплывающего окна и принять или отклонить эти предупреждения.</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;"># Нажмите на ссылку, чтобы активировать оповещение</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">driver.find_element(By.LINK_TEXT, &quot;See an example alert&quot;).click()<br /># Дождитесь отображения предупреждения и сохраните его в переменной</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">alert = wait.until(expected_conditions.alert_is_present())<br /># Сохраните текст предупреждения в переменной</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">text = alert.text<br /><br /># Нажмите кнопку &quot;ОК&quot;</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">alert.accept()</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:18pt; font-weight:600; color:#000000;">Confirm</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Окно подтверждения похоже на предупреждение, за исключением того, что пользователь также может отменить сообщение. Смотрите подтверждение образца.<br />В этом примере также показан другой подход к хранению предупреждения:</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;"># Нажмите на ссылку, чтобы активировать оповещение</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">driver.find_element(By.LINK_TEXT, &quot;See a sample confirm&quot;).click()<br /># Дождитесь отображения предупреждения</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">wait.until(expected_conditions.alert_is_present())<br /># Сохраните предупреждение в переменной для повторного использования</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">alert = driver.switch_to.alert<br /><br /># Сохраните текст предупреждения в переменной</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">text = alert.text<br /><br /># Нажмите кнопку &quot;Отмена&quot;</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">alert.dismiss()</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:18pt; font-weight:600; color:#000000;">Prompt</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Подсказки аналогичны полям подтверждения, за исключением того, что они также включают ввод текста. Аналогично работе с элементами формы, вы можете использовать ключи отправки WebDriver для заполнения ответа. Это полностью заменит текст-заполнитель. Нажатие кнопки &quot;Отмена&quot; не приведет к отправке какого-либо текста. См. Пример приглашения.</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;"># Нажмите на ссылку, чтобы активировать оповещение</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">driver.find_element(By.LINK_TEXT, &quot;See a sample prompt&quot;).click()<br /># Дождитесь отображения предупреждения</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">wait.until(expected_conditions.alert_is_present())<br /># Дождитесь отображения предупреждения</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">alert = Alert(driver)<br /># Введите свое сообщение</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">alert.send_keys(&quot;Selenium&quot;)<br /># Нажмите кнопку &quot;ОК&quot;</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">alert.accept()</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:21pt; font-weight:600; color:#000000;">Работа с файлами cookie</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Файл cookie - это небольшой фрагмент данных, который отправляется с веб-сайта и хранится на вашем компьютере. Файлы cookie в основном используются для распознавания пользователя и загрузки сохраненной информации.<br />API WebDriver предоставляет способ взаимодействия с файлами cookie с помощью встроенных методов:</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:18pt; font-weight:600; color:#000000;">Add Cookie</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Он используется для добавления файла cookie в текущий контекст просмотра. Добавить файл cookie принимает только набор определенных сериализуемых объектов JSON. Вот ссылка на список принятых значений ключа JSON<br />Прежде всего, вы должны быть на домене, для которого будет действителен файл cookie. Если вы пытаетесь установить файлы cookie до того, как начнете взаимодействовать с сайтом, а ваша домашняя страница большая / загрузка занимает некоторое время, альтернативой является поиск страницы меньшего размера на сайте (обычно страница 404 маленькая, например http://example.com/some404page )</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">from selenium import webdriver<br /><br />driver = webdriver.Chrome()<br />driver.get(&quot;http://www.example.com&quot;)<br /># Добавляет файл cookie в текущий контекст браузера</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">driver.add_cookie({&quot;name&quot;: &quot;key&quot;, &quot;value&quot;: &quot;value&quot;})</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:18pt; font-weight:600; color:#000000;">Get Named Cookie</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Он возвращает сериализованные данные файлов cookie, совпадающие с именем файла cookie среди всех связанных файлов cookie.</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">from selenium import webdriver<br /><br />driver = webdriver.Chrome()<br /># Перейдите по URL-адресу</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">driver.get(&quot;http://www.example.com&quot;)<br /># Добавляет файл cookie в текущий контекст браузера</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">driver.add_cookie({&quot;name&quot;: &quot;foo&quot;, &quot;value&quot;: &quot;bar&quot;})<br /># Получите подробную информацию о файлах cookie с помощью именованного файла cookie &quot;foo&quot;</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">print(driver.get_cookie(&quot;foo&quot;))</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:18pt; font-weight:600; color:#000000;">Get All Cookies</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Он возвращает &quot;успешно сериализованные данные файлов cookie&quot; для текущего контекста просмотра. Если браузер больше недоступен, он возвращает ошибку.</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">from selenium import webdriver<br /><br />driver = webdriver.Chrome()<br /># Перейдите по URL-адресу</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">driver.get(&quot;http://www.example.com&quot;)<br />driver.add_cookie({&quot;name&quot;: &quot;test1&quot;, &quot;value&quot;: &quot;cookie1&quot;}) driver.add_cookie({&quot;name&quot;: &quot;test2&quot;, &quot;value&quot;: &quot;cookie2&quot;})<br /># Получить все доступные файлы cookie</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">print(driver.get_cookies())</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:18pt; font-weight:600; color:#000000;">Delete Cookie</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Он удаляет данные файла cookie, совпадающие с указанным именем файла cookie.</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">from selenium import webdriver<br />driver = webdriver.Chrome()<br /># Перейдите по URL-адресу</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">driver.get(&quot;http://www.example.com&quot;)</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">driver.add_cookie({&quot;name&quot;: &quot;test1&quot;, &quot;value&quot;: &quot;cookie1&quot;})</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">driver.add_cookie({&quot;name&quot;: &quot;test2&quot;, &quot;value&quot;: &quot;cookie2&quot;})<br /># Удалить файл cookie с именем &quot;test1&quot;</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">driver.delete_cookie(&quot;test1&quot;)</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:18pt; font-weight:600; color:#000000;">Delete All Cookies</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Он удаляет все файлы cookie текущего контекста просмотра.</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">from selenium import webdriver<br />driver = webdriver.Chrome()<br /># Перейдите по URL-адресу</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">driver.get(&quot;http://www.example.com&quot;)</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">driver.add_cookie({&quot;name&quot;: &quot;test1&quot;, &quot;value&quot;: &quot;cookie1&quot;}) driver.add_cookie({&quot;name&quot;: &quot;test2&quot;, &quot;value&quot;: &quot;cookie2&quot;})<br /># Удаляет все файлы cookie</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">driver.delete_all_cookies()</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:21pt; font-weight:600; color:#000000;">Same-Site Cookie Attribute</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Это позволяет пользователю указывать браузерам контролировать, отправляются ли файлы cookie вместе с запросом, инициированным сторонними сайтами. Он введен для предотвращения атак CSRF (Подделка межсайтовых запросов).<br /><br />Атрибут cookie одного и того же сайта принимает два параметра в качестве инструкций</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:18pt; font-weight:600; color:#000000;">Strict</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Если для атрибута SameSite установлено значение Strict, файл cookie не будет отправляться вместе с запросами, инициированными сторонними веб-сайтами.</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:18pt; font-weight:600; color:#000000;">Lax</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Когда вы устанавливаете для атрибута того же сайта cookie значение Lax, файл cookie будет отправлен вместе с запросом GET, инициированным сторонним веб-сайтом.<br /><br />Примечание: На данный момент эта функция доступна в Chrome (версия 80+), Firefox (версия 79+) и работает с Selenium 4 и более поздними версиями.</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">from selenium import webdriver<br /><br />driver = webdriver.Chrome()<br />driver.get(&quot;http://www.example.com&quot;)</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;"># Добавляет файл cookie в текущий контекст браузера с тем же сайтом 'Strict' (or) 'Lax'</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">driver.add_cookie({&quot;name&quot;: &quot;foo&quot;, &quot;value&quot;: &quot;value&quot;, 'sameSite': 'Strict'}) driver.add_cookie({&quot;name&quot;: &quot;foo1&quot;, &quot;value&quot;: &quot;value&quot;, 'sameSite': 'Lax'}) cookie1 = driver.get_cookie('foo') cookie2 = driver.get_cookie('foo1') print(cookie1)</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">print(cookie2)</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:21pt; font-weight:600; color:#000000;">Работа с iFrames и фреймами</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Фреймы - это устаревшее средство создания макета сайта из нескольких документов в одном домене. Вы вряд ли будете работать с ними, если не работаете с веб-приложением до HTML5. Фреймы Iframe позволяют вставлять документ из совершенно другого домена и по-прежнему широко используются.<br /><br />Если вам нужно работать с фреймами или iframes, WebDriver позволяет вам работать с ними таким же образом. Рассмотрим кнопку внутри iframe. Если мы проверим элемент с помощью инструментов разработки браузера, мы можем увидеть следующее:</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">&lt;div id=&quot;modal&quot;&gt;</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">&lt;iframe id=&quot;buttonframe&quot; name=&quot;myframe&quot; src=&quot;https://seleniumhq.github.io&quot;&gt;</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">&lt;button&gt;Click here&lt;/button&gt;</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">&lt;/iframe&gt;</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">&lt;/div&gt;</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Если бы не iframe, мы ожидали бы нажать на кнопку, используя что-то вроде:</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">driver.find_element(By.TAG_NAME, 'button').click()</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Однако, если за пределами iframe нет кнопок, вместо этого вы можете получить сообщение об ошибке &quot;такого элемента нет&quot;. Это происходит потому, что Selenium знает только об элементах в документе верхнего уровня. Чтобы взаимодействовать с кнопкой, нам нужно будет сначала переключиться на рамку, аналогично тому, как мы переключаем окна. WebDriver предлагает три способа переключения на кадр.</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:18pt; font-weight:600; color:#000000;">Using a WebElement</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Переключение с помощью веб-элемента является наиболее гибким вариантом. Вы можете найти нужный кадр с помощью выбранного вами селектора и переключиться на него.</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;"># Хранить веб-элемент iframe</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">iframe = driver.find_element(By.CSS_SELECTOR, &quot;modal &gt; iframe&quot;)</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;"># переключиться на выбранный iframe</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">driver.switch_to.frame(iframe)<br /># Теперь нажмите на кнопку</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">driver.find_element(By.TAG_NAME, 'button').click()</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:18pt; font-weight:600; color:#000000;">Using a name or ID</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Если у вашего фрейма или iframe есть атрибут id или name, его можно использовать вместо этого. Если имя или идентификатор на странице не уникальны, то будет переключен на первый найденный.</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;"># Переключать кадр по идентификатору</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">driver.switch_to.frame('buttonframe')</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;"># Теперь нажмите на кнопку</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">driver.find_element(By.TAG_NAME, 'button').click()</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:18pt; font-weight:600; color:#000000;">Using an index</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Также можно использовать индекс фрейма, например, который можно запросить с помощью window.frames в JavaScript.</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;"># переключение на второй iframe на основе индекса</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">iframe = driver.find_elements_by_tag_name('iframe')[1]<br /># переключиться на выбранный iframe</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">driver.switch_to.frame(iframe)</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:18pt; font-weight:600; color:#000000;">Leaving a frame</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Чтобы оставить iframe или набор фреймов, вернитесь к содержимому по умолчанию, например:</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;"># вернуться к содержимому по умолчанию</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">driver.switch_to.default_content()</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:21pt; font-weight:600; color:#000000;">Работа с окнами и вкладками</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:18pt; font-weight:600; color:#000000;">Get window handle</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">WebDriver не делает различия между окнами и вкладками. Если ваш сайт открывает новую вкладку или окно, Selenium позволит вам работать с ним с помощью дескриптора окна. Каждое окно имеет уникальный идентификатор, который остается постоянным в течение одного сеанса. Вы можете получить дескриптор окна текущего окна с помощью:</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">print(browser.current_window_handle)</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:18pt; font-weight:600; color:#000000;">Переключение окон или вкладок</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Нажатие на ссылку, которая открывается в новом окне, сфокусирует новое окно или вкладку на экране, но WebDriver не будет знать, какое окно операционная система считает активным. Для работы с новым окном вам нужно будет переключиться на него. Если у вас открыто только две вкладки или окна, и вы знаете, с какого окна вы начинаете, в процессе исключения вы можете перебрать оба окна или вкладки, которые может видеть WebDriver, и переключиться на то, которое не является исходным.<br /><br />Однако Selenium 4 предоставляет новый api NewWindow, который создает новую вкладку (или) новое окно и автоматически переключается на него.</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">from selenium import webdriver<br />from selenium.webdriver.support.ui import WebDriverWait<br />from selenium.webdriver.support import expected_conditions as EC<br /><br />with webdriver.Firefox() as driver: driver.get(&quot;https://seleniumhq.github.io&quot;) # Открыть URL-адрес<br />wait = WebDriverWait(driver, 10) # Настройка отложена на потом<br />original_window = driver.current_window_handle # Сохраните идентификатор исходного окна<br />assert len(driver.window_handles) == 1 # Проверьте, у нас еще не открыты другие окна<br />driver.find_element(By.LINK_TEXT, &quot;new window&quot;).click() # Нажмите на ссылку, которая откроется в новом окне wait.until(EC.number_of_windows_to_be(2)) # Дождитесь появления нового окна или вкладки<br />for window_handle in driver.window_handles: # Перебирайте до тех пор, пока мы не найдем новый дескриптор окна</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">if window_handle != original_window: driver.switch_to.window(window_handle)</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">break<br /># Подождите, пока новая вкладка завершит загрузку содержимого wait.until(EC.title_is(&quot;SeleniumHQ Browser Automation&quot;))</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:18pt; font-weight:600; color:#000000;">Create new window (or) new tab and switch</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Создает новое окно (или) вкладку и фокусирует новое окно или вкладку на экране. Вам не нужно переключаться на работу с новым окном (или) вкладкой. Если у вас открыто более двух окон (или) вкладок, отличных от нового окна, вы можете просмотреть оба окна или вкладки, которые может видеть WebDriver, и переключиться на то, которое не является исходным.<br /><br />Примечание: Эта функция работает с Selenium 4 и более поздними версиями.</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;"># Открывает новую вкладку и переключается на новую вкладку</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">driver.switch_to.new_window('tab')<br /># Открывает новое окно и переключается в новое окно</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">driver.switch_to.new_window('window')</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:18pt; font-weight:600; color:#000000;">Closing a window or tab</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Когда вы закончите с окном или вкладкой, и это не последнее окно или вкладка, открытые в вашем браузере, вам следует закрыть их и вернуться к окну, которое вы использовали ранее. Предполагая, что вы следовали примеру кода в предыдущем разделе, у вас будет предыдущий дескриптор окна, сохраненный в переменной. Сложите это вместе, и вы получите:</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;"># Закройте вкладку или окно</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">driver.close()<br /># Вернитесь к старой вкладке или окну</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">driver.switch_to.window(original_window)</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:18pt; font-weight:600; color:#000000;">Quitting the browser at the end of a session</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Когда вы закончите сеанс браузера, вам следует позвонить quit, а не закрывать:</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">driver.quit()</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">quit</span><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;"> будет:</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Symbol'; font-size:10pt; color:#000000;">·</span><span style=" font-family:'Times New Roman'; font-size:7pt; color:#000000;"> </span><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Закройте все окна и вкладки, связанные с этим сеансом WebDriver</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Symbol'; font-size:10pt; color:#000000;">·</span><span style=" font-family:'Times New Roman'; font-size:7pt; color:#000000;"> </span><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Закройте процесс браузера</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Symbol'; font-size:10pt; color:#000000;">·</span><span style=" font-family:'Times New Roman'; font-size:7pt; color:#000000;"> </span><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Закройте фоновый процесс драйвера</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Symbol'; font-size:10pt; color:#000000;">·</span><span style=" font-family:'Times New Roman'; font-size:7pt; color:#000000;"> </span><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Уведомить Selenium Grid о том, что браузер больше не используется, чтобы его можно было использовать в другом сеансе (если вы используете Selenium Grid)</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Неспособность вызвать quit приведет к тому, что на вашем компьютере будут запущены дополнительные фоновые процессы и порты, что впоследствии может вызвать проблемы.<br /><br />Некоторые тестовые платформы предлагают методы и аннотации, к которым вы можете подключиться, чтобы удалить их в конце теста.</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;"># unittest teardown</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;"># https://docs.python.org/3/library/unittest.html?highlight=teardown#unittest.TestCase.tearDown</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">def tearDown(self):</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">self.driver.quit()</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Если вы не используете WebDriver в контексте тестирования, вы можете рассмотреть возможность использования try / finally, который предлагается большинством языков, чтобы исключение все равно очистило сеанс WebDriver.</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">try:</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;"># WebDriver code here...</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">finally:</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">driver.quit()</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">WebDriver Python теперь поддерживает диспетчер контекста python, который при использовании ключевого слова with может автоматически завершить работу с драйвером в конце выполнения.</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">with webdriver.Firefox() as driver:</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;"># WebDriver code here...<br /># WebDriver автоматически завершит работу после отступа</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:21pt; font-weight:600; color:#000000;">Управление окнами</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Разрешение экрана может повлиять на то, как отображается ваше веб-приложение, поэтому WebDriver предоставляет механизмы для перемещения и изменения размера окна браузера.</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:18pt; font-weight:600; color:#000000;">Get window size</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Извлекает размер окна браузера в пикселях.</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;"># Access each dimension individually</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">width = driver.get_window_size().get(&quot;width&quot;)</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">height = driver.get_window_size().get(&quot;height&quot;)<br /># Or store the dimensions and query them later</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">size = driver.get_window_size()</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">width1 = size.get(&quot;width&quot;)</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">height1 = size.get(&quot;height&quot;)</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:18pt; font-weight:600; color:#000000;">Set window size</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Восстанавливает окно и устанавливает размер окна.</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">driver.set_window_size(1024, 768)</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:18pt; font-weight:600; color:#000000;">Получить положение окна</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Извлекает координаты верхней левой координаты окна браузера.</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;"># Доступ к каждому измерению в отдельности</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">x = driver.get_window_position().get('x')</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">y = driver.get_window_position().get('y')<br /># Или сохраните размеры и запросите их позже</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">position = driver.get_window_position()</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">x1 = position.get('x')</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">y1 = position.get('y')</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:18pt; font-weight:600; color:#000000;">Установить положение окна</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Перемещает окно в выбранное положение.</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">driver.set_window_position(0, 0)</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:18pt; font-weight:600; color:#000000;">Развернуть окно</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Увеличивает окно. В большинстве операционных систем окно заполняет весь экран, не блокируя собственные меню и панели инструментов операционной системы.</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">driver.maximize_window()</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:18pt; font-weight:600; color:#000000;">Свернуть окно</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Сворачивает окно текущего контекста просмотра. Точное поведение этой команды зависит от отдельных оконных менеджеров.<br /><br />Свернуть окно обычно скрывает окно в системном трее.<br /><br />Примечание: Эта функция работает с Selenium 4 и более поздними версиями.</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">driver.minimize_window()</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:18pt; font-weight:600; color:#000000;">Полноэкранное окно</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Заполняет весь экран, аналогично нажатию клавиши F11 в большинстве браузеров.</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">driver.fullscreen_window()</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:18pt; font-weight:600; color:#000000;">Сделайте снимок экрана</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Используется для захвата скриншота для текущего контекста просмотра. Снимок экрана конечной точки WebDriver возвращает снимок экрана, который закодирован в формате Base64.</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">from selenium import webdriver<br /><br />driver = webdriver.Chrome()<br />driver.get(&quot;http://www.example.com&quot;)<br /># Возвращает строку в кодировке base64 в изображение driver.save_screenshot('./image.png')<br />driver.quit()</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:18pt; font-weight:600; color:#000000;">Снимок экрана takeэлемента</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Используется для захвата снимка экрана элемента для текущего контекста просмотра. Снимок экрана конечной точки WebDriver возвращает снимок экрана, который закодирован в формате Base64.</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">from selenium import webdriver<br />from selenium.webdriver.common.by import By<br /><br />driver = webdriver.Chrome()<br />driver.get(&quot;http://www.example.com&quot;)<br />ele = driver.find_element(By.CSS_SELECTOR, 'h1')<br /># Возвращает строку в кодировке base64 в изображение</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">ele.screenshot('./image.png')<br />driver.quit()</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:18pt; font-weight:600; color:#000000;">Выполнить сценарий</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Выполняет фрагмент кода JavaScript в текущем контексте выбранного фрейма или окна.</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;"># Stores the header element</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">header = driver.find_element(By.CSS_SELECTOR, &quot;h1&quot;)<br /># Executing JavaScript to capture innerText of header element driver.execute_script('return arguments[0].innerText', header)</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:18pt; font-weight:600; color:#000000;">Страница печати</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Печатает текущую страницу в браузере.<br /><br />Примечание: Для этого требуется, чтобы браузеры Chromium находились в безголовом режиме</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">from selenium.webdriver.common.print_page_options import PrintOptions<br /><br />print_options = PrintOptions()</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">print_options.page_ranges = ['1-2']<br />driver.get(&quot;printPage.html&quot;)<br />base64code = driver.print_page(print_options)</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:18pt; font-weight:600; color:#000000;">+++++++++++++++++++++++++++++++</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:18pt; font-weight:600; color:#000000;">Получить Активный Элемент</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Он используется для отслеживания (или) поиска элемента DOM, который находится в центре внимания в текущем контексте просмотра.</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">from selenium import webdriver</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">from selenium.webdriver.common.by import By</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">driver = webdriver.Chrome()</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">driver.get(&quot;https://www.google.com&quot;)</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">driver.find_element(By.CSS_SELECTOR, '[name=&quot;q&quot;]').send_keys(&quot;webElement&quot;)</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;"># Get attribute of current active element</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">attr = driver.switch_to.active_element.get_attribute(&quot;title&quot;)</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">print(attr)</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:21pt; font-weight:600; color:#000000;">Что вы можете узнать об элементе.</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:18pt; font-weight:600; color:#000000;">Is Displayed</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Is Enabled</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Этот метод используется для проверки того, включен или отключен подключенный элемент на веб-странице. Возвращает логическое значение, True, если подключенный элемент включен в текущем контексте просмотра, в противном случае возвращает false.</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;"># Navigate to url</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">driver.get(&quot;http://www.google.com&quot;)</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;"># Returns true if element is enabled else returns false</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">value = driver.find_element(By.NAME, 'btnK').is_enabled()</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Is Selected</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Этот метод определяет, выбран ли элемент, на который ссылается ссылка, или нет. Этот метод широко используется для флажков, переключателей, элементов ввода и элементов опций.<br /><br />Возвращает логическое значение, True, если элемент, на который ссылается ссылка, выбран в текущем контексте просмотра, в противном случае возвращает false.</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;"># Navigate to url</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">driver.get(&quot;https://the-internet.herokuapp.com/checkboxes&quot;)</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;"># Returns true if element is checked else returns false</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">value = driver.find_element(By.CSS_SELECTOR, &quot;input[type='checkbox']:first-of-type&quot;).is_selected()</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Tag Name</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Он используется для извлечения имени тега ссылочного элемента, который находится в фокусе в текущем контексте просмотра.</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;"># Navigate to url</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">driver.get(&quot;https://www.example.com&quot;)</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;"># Returns TagName of the element</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">attr = driver.find_element(By.CSS_SELECTOR, &quot;h1&quot;).tag_name</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Size and Position</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Он используется для получения размеров и координат ссылочного элемента.<br /><br />Извлеченный текст данных содержит следующие сведения:<br /><br />Положение оси X от верхнего левого угла элемента<br />положение по оси y от верхнего левого угла элемента<br />Высота элемента<br />Ширина элемента</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;"># Navigate to url</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">driver.get(&quot;https://www.example.com&quot;)</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;"># Returns height, width, x and y coordinates referenced element</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">res = driver.find_element(By.CSS_SELECTOR, &quot;h1&quot;).rect</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Получить значение CSS</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Извлекает значение указанного свойства вычисляемого стиля элемента в текущем контексте просмотра.</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;"># Navigate to Url</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">driver.get('https://www.example.com')</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;"># Retrieves the computed style property 'color' of linktext</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">cssValue = driver.findElement(By.LINK_TEXT, &quot;More information...&quot;).value_of_css_property('color')</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Текстовое Содержимое</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Извлекает отображенный текст указанного элемента.</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;"># Navigate to url</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">driver.get(&quot;https://www.example.com&quot;)</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;"># Retrieves the text of the element</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">text = driver.find_element(By.CSS_SELECTOR, &quot;h1&quot;).text</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:21pt; font-weight:600; color:#000000;">Работа с элементами списка выбора</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Списки выбора имеют особое поведение по сравнению с другими элементами.<br />Для автоматизации выбора элементов может потребоваться довольно много кода котельной плиты. Чтобы уменьшить это и сделать ваши тесты более чистыми, в пакете поддержки Selenium есть класс Select. Чтобы использовать его, вам понадобится следующая инструкция импорта:</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">from selenium.webdriver.support.select import Select</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Затем вы сможете создать объект Select с помощью WebElement, который ссылается на элемент &lt;select&gt;.</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">select_element = driver.find_element(By.ID,'selectElementID')</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">select_object = Select(select_element)</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Объект выбора теперь предоставит вам ряд команд, которые позволят вам взаимодействовать с элементом &lt;select&gt;. Прежде всего, существуют различные способы выбора опции из элемента &lt;select&gt;.</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">&lt;select&gt;</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">&lt;option value=value1&gt;Bread&lt;/option&gt;</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">&lt;option value=value2 selected&gt;Milk&lt;/option&gt;</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">&lt;option value=value3&gt;Cheese&lt;/option&gt;</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">&lt;/select&gt;</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Есть три способа выбрать первый вариант из приведенного выше элемента:</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;"># Select an &lt;option&gt; based upon the &lt;select&gt; element's internal index</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">select_object.select_by_index(1)</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;"># Select an &lt;option&gt; based upon its value attribute</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">select_object.select_by_value('value1')</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;"># Select an &lt;option&gt; based upon its text</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">select_object.select_by_visible_text('Bread')</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Затем вы можете проверить, какие параметры выбраны с помощью:</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;"># Return a list[WebElement] of options that have been selected</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">all_selected_options = select_object.all_selected_options</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;"># Return a WebElement referencing the first selection option found by walking down the DOM</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">first_selected_option = select_object.first_selected_option</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Или вам может быть просто интересно, какие элементы &lt;option&gt; содержит элемент &lt;select&gt;:</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;"># Return a list[WebElement] of options that the &amp;lt;select&amp;gt; element contains</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">all_available_options = select_object.options</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Если вы хотите отменить выбор каких-либо элементов, теперь у вас есть четыре варианта:</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;"># Deselect an &lt;option&gt; based upon the &lt;select&gt; element's internal index</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">select_object.deselect_by_index(1)</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;"># Deselect an &lt;option&gt; based upon its value attribute</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">select_object.deselect_by_value('value1')</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;"># Deselect an &lt;option&gt; based upon its text</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">select_object.deselect_by_visible_text('Bread')</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;"># Deselect all selected &lt;option&gt; elements</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">select_object.deselect_all()</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Наконец, некоторые элементы &lt;select&gt; позволяют выбрать более одного параметра. Вы можете узнать, является ли ваш элемент &lt;select&gt; одним из них, используя:</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">does_this_allow_multiple_selections = select_object.is_multiple</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:21pt; font-weight:600; color:#000000;">Удаленный веб-драйвер</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Вы можете использовать WebDriver удаленно так же, как вы бы использовали его локально. Основное отличие заключается в том, что удаленный WebDriver необходимо настроить так, чтобы он мог запускать ваши тесты на отдельной машине.<br /><br />Удаленный веб-драйвер состоит из двух частей: клиента и сервера. Клиент - это ваш тест WebDriver, а сервер - это просто Java-сервлет, который может быть размещен на любом современном сервере приложений JEE.<br /><br />Чтобы запустить удаленный клиент WebDriver, нам сначала нужно подключиться к RemoteWebDriver. Мы делаем это, указывая URL-адрес на адрес сервера, на котором выполняются наши тесты. Чтобы настроить нашу конфигурацию, мы устанавливаем желаемые возможности.…</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><a href="https://www.selenium.dev/documentation/webdriver/remote_webdriver/"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; text-decoration: underline; color:#0000ff;">Статья тут.</span></a> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:21pt; font-weight:600; color:#000000;">ожидание</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Обычно можно сказать, что WebDriver имеет блокирующий API. Поскольку это внепроцессная библиотека, которая инструктирует браузер, что делать, и поскольку веб-платформа имеет внутреннюю асинхронную природу, WebDriver не отслеживает активное состояние DOM в реальном времени. Это связано с некоторыми проблемами, которые мы обсудим здесь.<br /><br />По опыту, большинство периодических проблем, возникающих при использовании Selenium и WebDriver, связаны с условиями гонки, возникающими между браузером и инструкциями пользователя. Примером может быть то, что пользователь указывает браузеру перейти на страницу, а затем при попытке найти элемент выдает ошибку &quot;такого элемента нет&quot;.<br /><br />Рассмотрим следующий…</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">&lt;!doctype html&gt;</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">&lt;meta charset=utf-8&gt;</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">&lt;title&gt;Race Condition Example&lt;/title&gt;</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">&lt;script&gt;</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">var initialised = false;</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">window.addEventListener(&quot;load&quot;, function() {</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">var newElement = document.createElement(&quot;p&quot;);</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">newElement.textContent = &quot;Hello from JavaScript!&quot;;</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">document.body.appendChild(newElement);</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">initialised = true;</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">});</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">&lt;/script&gt;</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Инструкции WebDriver могут выглядеть достаточно невинно:</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">driver.navigate(&quot;file:///race_condition.html&quot;)</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">el = driver.find_element(By.TAG_NAME, &quot;p&quot;)</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">assert el.text == &quot;Hello from JavaScript!&quot;</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Проблема здесь в том, что стратегия загрузки страницы по умолчанию, используемая в WebDriver, прослушивает состояние document.readyState для изменения на &quot;завершить&quot; перед возвратом из вызова для навигации. Поскольку элемент p добавляется после завершения загрузки документа, этот сценарий WebDriver может работать с перебоями. Это “может” быть прерывистым, потому что нельзя дать никаких гарантий в отношении элементов или событий, которые запускаются асинхронно без явного ожидания — или блокировки — этих событий.</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">К счастью, обычный набор команд, доступный в интерфейсе WebElement, такой как WebElement.click и WebElement.SendKeys, гарантированно будет синхронным, поскольку вызовы функций не будут возвращаться (или обратный вызов не будет запускаться на языках в стиле обратного вызова), пока команда не будет завершена в браузере. API-интерфейсы расширенного взаимодействия с пользователем, клавиатура и мышь, являются исключениями, поскольку они явно предназначены для асинхронных команд “делай, что я говорю&quot;.<br /><br />Ожидание - это когда автоматическое выполнение задачи проходит определенное количество времени, прежде чем перейти к следующему шагу.</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Чтобы решить проблему, связанную с условиями гонки между браузером и вашим сценарием WebDriver, большинство клиентов Selenium поставляются с пакетом ожидания. При использовании ожидания вы используете то, что обычно называют явным ожиданием.</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:18pt; font-weight:600; color:#000000;">Явное ожидание</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Явные ожидания доступны клиентам Selenium для императивных процедурных языков. Они позволяют вашему коду останавливать выполнение программы или замораживать поток до тех пор, пока не будет выполнено переданное вами условие. Условие вызывается с определенной частотой до тех пор, пока не истечет время ожидания. Это означает, что до тех пор, пока условие возвращает ложное значение, оно будет продолжать пытаться и ждать.<br /><br />Поскольку явные ожидания позволяют вам дождаться выполнения условия, они хорошо подходят для синхронизации состояния между браузером и его DOM и вашим сценарием WebDriver.</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Чтобы исправить наш ошибочный набор инструкций из предыдущих, мы могли бы использовать ожидание, чтобы вызов findElement подождал, пока динамически добавляемый элемент из скрипта не будет добавлен в DOM:</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">from selenium.webdriver.support.ui import WebDriverWait</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">def document_initialised(driver):</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">return driver.execute_script(&quot;return initialised&quot;)</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">driver.navigate(&quot;file:///race_condition.html&quot;)</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">WebDriverWait(driver).until(document_initialised)</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">el = driver.find_element(By.TAG_NAME, &quot;p&quot;)</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">assert el.text == &quot;Hello from JavaScript!&quot;</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Мы передаем условие в качестве ссылки на функцию, что ожидание будет выполняться повторно до тех пор, пока его возвращаемое значение не будет истинным. “Правдивое” возвращаемое значение - это все, что оценивается как логическое значение true на данном языке, например строка, число, логическое значение, объект (включая веб-элемент) или заполненная (непустая) последовательность или список. Это означает, что пустой список оценивается как false. Когда условие выполняется верно и блокирующее ожидание прерывается, возвращаемое значение из условия становится возвращаемым значением ожидания.</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Обладая этими знаниями и поскольку утилита ожидания по умолчанию не игнорирует ошибки таких элементов, мы можем переработать наши инструкции, чтобы они были более краткими:</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">from selenium.webdriver.support.ui import WebDriverWait</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">driver.navigate(&quot;file:///race_condition.html&quot;)</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">el = WebDriverWait(driver).until(lambda d: d.find_element_by_tag_name(&quot;p&quot;))</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">assert el.text == &quot;Hello from JavaScript!&quot;</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">В этом примере мы передаем анонимную функцию (но мы также могли бы определить ее явно, как мы делали ранее, чтобы ее можно было использовать повторно). Первый и единственный аргумент, который передается нашему условию, всегда является ссылкой на наш объект драйвера, WebDriver. В многопоточной среде следует быть осторожным при работе со ссылкой на драйвер, переданной в условие, а не со ссылкой на драйвер во внешней области.</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Поскольку ожидание не будет проглатывать такие ошибки элемента, которые возникают, когда элемент не найден, условие будет повторяться до тех пор, пока элемент не будет найден. Затем он примет возвращаемое значение, веб-элемент, и передаст его обратно в наш скрипт.<br /><br />Если условие не выполняется, например, правдивое возвращаемое значение из условия никогда не достигается, ожидание вызовет/вызовет ошибку/исключение, называемое ошибкой тайм-аута</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:18pt; font-weight:600; color:#000000;">Options</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Условие ожидания может быть настроено в соответствии с вашими потребностями. Иногда нет необходимости ждать полного времени ожидания по умолчанию, так как штраф за невыполнение условия успешного выполнения может быть дорогостоящим.<br /><br />Ожидание позволяет вам передать аргумент для переопределения времени ожидания:</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">WebDriverWait(driver, timeout=3).until(some_condition)</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:18pt; font-weight:600; color:#000000;">Ожидаемые условия</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Поскольку необходимость синхронизации DOM и ваших инструкций является довольно распространенным явлением, большинство клиентов также имеют набор предопределенных ожидаемых условий. Как может быть очевидно из названия, это условия, которые предопределены для частых операций ожидания.<br /><br />Условия, доступные в разных языковых привязках, различаются, но это неполный список из нескольких:</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Symbol'; font-size:10pt; color:#000000;">·</span><span style=" font-family:'Times New Roman'; font-size:7pt; color:#000000;"> </span><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">alert is present</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Symbol'; font-size:10pt; color:#000000;">·</span><span style=" font-family:'Times New Roman'; font-size:7pt; color:#000000;"> </span><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">element exists</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Symbol'; font-size:10pt; color:#000000;">·</span><span style=" font-family:'Times New Roman'; font-size:7pt; color:#000000;"> </span><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">element is visible</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Symbol'; font-size:10pt; color:#000000;">·</span><span style=" font-family:'Times New Roman'; font-size:7pt; color:#000000;"> </span><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">title contains</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Symbol'; font-size:10pt; color:#000000;">·</span><span style=" font-family:'Times New Roman'; font-size:7pt; color:#000000;"> </span><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">title is</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Symbol'; font-size:10pt; color:#000000;">·</span><span style=" font-family:'Times New Roman'; font-size:7pt; color:#000000;"> </span><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">element staleness</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Symbol'; font-size:10pt; color:#000000;">·</span><span style=" font-family:'Times New Roman'; font-size:7pt; color:#000000;"> </span><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">visible text</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Вы можете обратиться к документации API для каждой привязки клиента, чтобы найти исчерпывающий список ожидаемых условий:</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Python’s </span><a href="https://seleniumhq.github.io/selenium/docs/api/py/webdriver_support/selenium.webdriver.support.expected_conditions.html?highlight=expected"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; text-decoration: underline; color:#0000ff;">selenium.webdriver.support.expected_conditions</span></a><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;"> class</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:18pt; font-weight:600; color:#000000;">Скрытое ожидание</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Существует второй тип ожидания, который отличается от явного ожидания, называемого неявным ожиданием. Неявно ожидая, WebDriver опрашивает DOM в течение определенного времени при попытке найти какой-либо элемент. Это может быть полезно, когда определенные элементы на веб-странице недоступны сразу и для загрузки требуется некоторое время.<br /><br />Неявное ожидание появления элементов по умолчанию отключено, и его необходимо будет включать вручную для каждого сеанса. Смешивание явных ожиданий и неявных ожиданий приведет к непреднамеренным последствиям, а именно к ожиданию в режиме ожидания в течение максимального времени, даже если элемент доступен или условие истинно.</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Предупреждение: Не смешивайте явные и неявные ожидания. Это может привести к непредсказуемому времени ожидания. Например, установка неявного ожидания в 10 секунд и явного ожидания в 15 секунд может привести к истечению времени ожидания через 20 секунд.<br /><br />Неявное ожидание состоит в том, чтобы указать WebDriver опрашивать DOM в течение определенного промежутка времени при попытке найти элемент или элементы, если они недоступны немедленно. Значение по умолчанию равно 0, что означает отключено. После установки неявное ожидание устанавливается на весь срок действия сеанса.</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">driver = Firefox()</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">driver.implicitly_wait(10)</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">driver.get(&quot;http://somedomain/url_that_delays_loading&quot;)</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">my_dynamic_element = driver.find_element(By.ID, &quot;myDynamicElement&quot;)</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:18pt; font-weight:600; color:#000000;">Свободное ожидание</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Экземпляр FluentWait определяет максимальное время ожидания условия, а также частоту проверки условия.<br /><br />Пользователи могут настроить ожидание, чтобы игнорировать определенные типы исключений во время ожидания, такие как исключение NoSuchElementException при поиске элемента на странице.</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">driver = Firefox()</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">driver.get(&quot;http://somedomain/url_that_delays_loading&quot;)</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">wait = WebDriverWait(driver, 10, poll_frequency=1, ignored_exceptions=[ElementNotVisibleException, ElementNotSelectableException])</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">element = wait.until(EC.element_to_be_clickable((By.XPATH, &quot;//div&quot;)))</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:21pt; font-weight:600; color:#000000;">API действий</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Продолжение - </span><a href="https://www.selenium.dev/documentation/webdriver/actions_api/"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; text-decoration: underline; color:#0000ff;">https://www.selenium.dev/documentation/webdriver/actions_api/</span></a> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:21pt; font-weight:600; color:#000000;">Полезные ссылки:</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><a href="https://www.youtube.com/watch?v=dlh7Z9MU3Yc&amp;list=PLKYl0YF_AExvCjyx0sq0qbdA3eVErT6QX"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; text-decoration: underline; color:#0000ff;">АВТОМАТИЗИРОВАННОЕ ТЕСТИРОВАНИЕ С НУЛЯ | PYTHON + SELENIUM</span></a> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:21pt; font-weight:600; color:#000000;">Необходим более детальное изучение:</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Ошибка:</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">selenium.common.exceptions.ElementNotInteractableException: Message: Element &lt;button class=&quot;imsocial-btn imsocial-btn--icon imsocial-btn--vk&quot; type=&quot;button&quot;&gt; could not be scrolled into view</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">Возможные варианты решения:</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">1) В коде страницы могут быть скрытые и заблокированные элементы с такими же параметрами. Для проверки этого необходимо выполнить:</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">elements = driver.find_elements(By.CLASS_NAME, 'imsocial-btn imsocial-btn--icon imsocial-btn--vk')<br />print (len(elements))</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;">В случае наличия большого кол-ва списка </span><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">elements нужно выяснять кокой именно необходим нам.</span> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; font-style:italic; color:#000000;">2)</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><a href="https://stackoverflow.com/questions/56085152/selenium-python-error-element-could-not-be-scrolled-into-view"><span style=" font-family:'Times New Roman,serif'; font-size:12pt; color:#000000;"> </span></a> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><a href="https://stackoverflow.com/questions/56085152/selenium-python-error-element-could-not-be-scrolled-into-view"><span style=" font-family:'Helvetica,sans-serif'; font-size:10.5pt; color:#0000ff;">Selenium python Error: element could not be scrolled into view</span></a> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><a href="https://stackoverflow.com/questions/56085152/selenium-python-error-element-could-not-be-scrolled-into-view"><span style=" font-family:'Helvetica,sans-serif'; font-size:10.5pt; color:#0000ff;">stackoverflow.com</span></a> </p>
<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Helvetica,sans-serif'; font-size:13pt; color:#000000;"> </span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Segoe UI,sans-serif'; font-size:12pt; color:#000000;">Подпишитесь на канал,</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Segoe UI,sans-serif'; font-size:12pt; color:#000000;">чтобы не пропустить новые публикации</span> </p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'Segoe UI,sans-serif'; font-size:12pt; color:#000000;">Вы подписаны</span> </p>
<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">  </p></body></html>